/**
 * 单例模式
 * 通常用来定义命名空间，管理代码的各个模块
 */

// 定义私有变量
var Conf = function () {
  var conf = {
    MAX_NUM: 100,
    MIN_NUM: 1,
  }
  return {
    get: function (name) {
      return conf[name] ? conf[name] : null
    }
  }
}()
var count =  Conf.get('MAX_NUM')
// console.log(count)

// 惰性单例
var LazySingle = function(){  // 其实就是在一个函数内部定义一个变量来存储实例
  var _instance = null;
  function Single(){
    return {
      publicMethod: function(){},
      ceshi: 'fasd',
    }
  }
  return function(){
    if(!_instance){
      _instance = Single()
    }
    return _instance
  }
}()

console.log(LazySingle().ceshi)